<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>

  <script>
    /*
      数组常用方法 - 总结

      1. push()
        => 后面追加
        => 返回值: 追加后数组最新的长度

      2. pop()
        => 后面删除
        => 返回值: 被删除的数据

      3. unshift()
        => 前面添加
        => 返回值: 添加后数组最新的长度

      4. shift()
        => 前面删除
        => 返回值: 被删除的数据

      5. reverse()
        => 数组反转
        => 返回值: 反转后的数组

      6. sort()
        => 数组.sort() ASCII
        => 数组.sort(function (a, b) { return a - b }) 升序
        => 数组.sort(function (a, b) { return b - a }) 降序
        => 数组排序
        => 返回值: 排序后的数组

      7. splice()
        => 数组.splice(开始索引, 多少个)
        => 数组.splice(开始索引, 多少个, 插入数据)
        => 数组截取并选择性的插入数据, 注意: 从哪里删除, 从哪里插入
        => 返回值: 一个新的数组, 存储的是截取出来的所有内容

      ===================== 以上数组常用方法, 都是直接改变原始数组 =====================

      8. concat()
        => 拼接数组
        => 返回值: 拼接好的新数组

      9. join(连接符)
        => 使用连接符连接数组内的每一项
        => 返回值: 一个字符串类型, 使用连接符连接好的内容

      10. slice()
        => 数组.slice(开始索引, 结束索引)
          -> 特点1: 包前不包后
          -> 特点2: 可以填写负整数
        => 截取数组内的内容
        => 返回值: 一个新的数组, 数组内存储的是截取出来的内容

      11. indexOf()
        => 从前向后检索数据出现的索引位置
        => 返回值: 如果有这个数据, 就是第一次出现的索引位置, 如果没有这个数据, 就是 -1

      12. lastIndexOf()
        => 从后向前检索数据出现的索引位置
        => 返回值: 如果有这个数据, 就是第一次出现的索引位置, 如果没有这个数据, 就是 -1

      13. forEach(function (item, index, arr) {})
        => 遍历数组
        => 返回值: 没有

      14. map(function (item, index, arr) {})
        => 映射数组
        => 返回值: 一个新的数组, 对原始数组内每一项操作后的结果

      15. filter(function (item, index, arr) {})
        => 过滤数组
        => 返回值: 一个新的数组, 原始数组内满足条件的新数组

      16. every(function (item, index, arr) {})
        => 判断是否每一项都满足条件
        => 返回值:
          -> 如果数组内每一项都满足条件, 那么返回 true
          -> 只要有任何一项不满足条件, 那么返回 false

      17. some(function (item, index, arr) {})
        => 判断是否某一项满足条件
        => 返回值:
          -> 如果数组内有任何一项满足条件, 那么返回 true
          -> 只有数组内所有都不满足条件, 那么返回 false

      18. find(function (item, index, arr) {})
        => 根据条件查找数组中的数据
        => 返回值: 查找到的数据

      19. findIndex(function (item, index, arr) {})
        => 根据条件查找数组中的数据所在的索引位置
        => 返回值: 查找到的数据的索引位置

      20. flat(数字)
        => 拍平数组
        => 数组: 书写多少, 就是拍平多少层
          -> 可以书写 Infinity 来表示全部拍平
        => 返回值: 一个被拍平的数组

      21. fill()
        => 填充数组
        => 数组.fill(填充数据, 开始索引, 结束索引)
          -> 特点: 包前不包后
        => 注意: 会直接改变原始数组
        => 注意: 只能填充现有索引位置数据, 不能新增数据

      22. includes()
        => 判断是否存在数据
        => 返回值: 一个布尔值
          -> 如果数组内有该数据, 那么返回 true
          -> 如果数组内没有该数据, 那么返回 false

      23. reduce(function (prev, item, index, arr), init)
        => init 可以写可以不写, 不写的时候默认使用数组 [0] 位置的数据
        => 当 init 不写的时候, 遍历会从 [1] 开始
        => 当 init 书写的时候, 遍历会从 [0] 开始
        => 叠加数组
        => 返回值: 最终的叠加结果
    */
  </script>
</body>
</html>
